java.lang.Object
edu.claflin.finder.algo.clustering.struct.leading_eigenvector_struct.EigenvalueDecomposition
All Implemented Interfaces:
Serializable

public class EigenvalueDecomposition extends Object implements Serializable
Eigenvalues and eigenvectors of a real matrix. Part of JAMAS and called in Matrix for further details check the comment at the top of the Matrix class in this package. If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. I.e. A = V.times(D.times(V.transpose())) and V.times(V.transpose()) equals the identity matrix. If A is not symmetric, then the eigenvalue matrix D is block diagonal with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The columns of V represent the eigenvectors in the sense that A*V = V*D, i.e. A.times(V) equals V.times(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*inverse(V) depends upon V.cond().
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private double
     
    private double
     
    private double[]
    Arrays for internal storage of eigenvalues.
    private double[]
    Arrays for internal storage of eigenvalues.
    private double[][]
    Array for internal storage of nonsymmetric Hessenberg form.
    private boolean
    Symmetry flag.
    private int
    Row and column dimension (square matrix).
    private double[]
    Working storage for nonsymmetric algorithm.
    private static final long
     
    private double[][]
    Array for internal storage of eigenvectors.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Check for symmetry, then construct the eigenvalue decomposition Structure to access D and V.
  • Method Summary

    Modifier and Type
    Method
    Description
    private void
    cdiv(double xr, double xi, double yr, double yi)
     
    Return the block diagonal eigenvalue matrix
    double[]
    Return the imaginary parts of the eigenvalues
    double[]
    Return the real parts of the eigenvalues
    Return the eigenvector matrix
    private void
     
    private void
     
    private void
     
    private void
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • n

      private int n
      Row and column dimension (square matrix).
    • issymmetric

      private boolean issymmetric
      Symmetry flag.
    • d

      private double[] d
      Arrays for internal storage of eigenvalues.
    • e

      private double[] e
      Arrays for internal storage of eigenvalues.
    • V

      private double[][] V
      Array for internal storage of eigenvectors.
    • H

      private double[][] H
      Array for internal storage of nonsymmetric Hessenberg form.
    • ort

      private double[] ort
      Working storage for nonsymmetric algorithm.
    • cdivr

      private transient double cdivr
    • cdivi

      private transient double cdivi
    • serialVersionUID

      private static final long serialVersionUID
      See Also:
  • Constructor Details

    • EigenvalueDecomposition

      public EigenvalueDecomposition(Matrix Arg)
      Check for symmetry, then construct the eigenvalue decomposition Structure to access D and V.
      Parameters:
      Arg - Square matrix
  • Method Details

    • tred2

      private void tred2()
    • tql2

      private void tql2()
    • orthes

      private void orthes()
    • cdiv

      private void cdiv(double xr, double xi, double yr, double yi)
    • hqr2

      private void hqr2()
    • getV

      public Matrix getV()
      Return the eigenvector matrix
      Returns:
      V
    • getRealEigenvalues

      public double[] getRealEigenvalues()
      Return the real parts of the eigenvalues
      Returns:
      real(diag(D))
    • getImagEigenvalues

      public double[] getImagEigenvalues()
      Return the imaginary parts of the eigenvalues
      Returns:
      imag(diag(D))
    • getD

      public Matrix getD()
      Return the block diagonal eigenvalue matrix
      Returns:
      D